
#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

struct Pos{
    int row;
    int col;
    Pos(int row,int col):row(row),col(col){

    }
};

class OneLoop{
public:
//    std::list<Pos> puted;
    std::vector<std::vector<int>> vec2;
    int n;
    int max=0;
    std::vector<int> cnt_set;
    bool putable(int row,int col){
        if(vec2[row][col]==0){
            return false;
        }
        //横向向前
        for(int i=col-1;i>=0;i--){
            if(vec2[row][i]==0){
                break;
            }
            if(vec2[row][i]==2){
                return false;
            }
        }
        //纵向向前
        for(int i=row-1;i>=0;i--){
            if(vec2[i][col]==0){
                break;
            }
            if(vec2[i][col]==2){
                return false;
            }
        }
        return true;
    }
    void put(int cnt,int end,int last_i){
        if(cnt==end){
            cnt_set[end-1]++;
            return;
        }
        for(int i=last_i+1;i<n*n;i++){
            if(putable(i/n,i%n)){
                vec2[i/n][i%n]=2;
                put(cnt+1,end,i);
                vec2[i/n][i%n]=1;
            }
        }
    }
    void input(){
        for (int i = 0; i <n ; ++i) {
            std::vector<int> vec;
            for (int j = 0; j < n; ++j) {
                int a;std::cin>>a;
                vec.push_back(a);
            }
            vec2.push_back(vec);
        }
    }
    void run(
            int a
            ){
        n=a;
        cnt_set.resize(n);
        input();
        for(int i=0;i<n;i++){
            put(0,i+1,-1);
        }
        for(auto s:cnt_set){
            printf("%d\n",s);
        }
    }
};
class Solution {
public:
    void run() {

        bool first = true;
        int a,b,c,d,e;
//        std::string s1,s2;
        while (
                std::cin>>a
//                std::getline(std::cin,s1)
                )
        {
//            std::getline(std::cin,s2);
            OneLoop loop;
            loop.run(a);
        }
    }
};

int main() {
//    bool cur_num= true;
    Solution().run();
    return 0;
}

